package com.bestcem.xm.member.controller.vo;

import com.alibaba.fastjson.JSONObject;
import com.bestcem.xm.member.service.dto.ExtendFieldDTO;
import com.bestcem.xm.member.service.dto.GroupDTO;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author ming.xue <ming.xue@idiaoyan.com>
 * @desc 联系人
 * @date 2021-07-21
 */
@Getter
@Setter
@ToString
@NoArgsConstructor
public class MemberDetailVO {

    private String oid;

    /**
     * 实体标识
     */
    private String id;


    private String orgId;

    /**
     * 系统编号（源自用户管理系统）
     */
    private String sysId;

    /**
     * 来源
     */
    private String source;

    /**
     * 微信头像url
     */
    private String avatar;

    /**
     * 姓名
     */
    private String name;

    /**
     * 昵称
     */
    private String nickname;

    /**
     * 性别
     */
    private String gender;

    /**
     * [省份, 城市, 区县, 街道信息]
     */
    private List<String> address;

    /**
     * 手机号
     */
    private String mobile;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 出生日期
     */
    @JsonFormat(pattern = "yyyy/MM/dd")
    private Date birthday;

    /**
     * 年龄
     */
    private Integer age;

    /**
     * 区域信息(省份、城市、区，源于第三方系统)，所属地区
     */
    private String region;

    /**
     * 所属组织
     */
    private String store;

    @JsonProperty(value = "storename")
    private String storeName;

    /**
     * 用户状态
     */
    private Integer status;

    /**
     * 备注
     */
    private String content;

    /**
     * 员工编号
     */
    @JsonProperty(value = "employeeID")
    private String employeeId;

    /**
     * 雇佣状态
     */
    @JsonProperty(value = "employee_status")
    private Integer employeeStatus;

    /**
     * 所属部门，机构联系人有此字段
     */
    private String department;

    /**
     * 职位，机构联系人有此字段
     */
    private String position;

    /**
     * 机构编号，即机构联系人中的客户编号
     */
    @JsonProperty(value = "institutID")
    private String instituteId;

    /**
     * 机构名称，机构联系人有此字段
     */
    @JsonProperty(value = "institut_name")
    private String instituteName;

    /**
     * 用户标识，内部联系人需要的字段
     */
    private String userId;

    /**
     * 联系人编号
     */
    private String memberNo;

    /**
     * 联系人类型
     */
    @JsonProperty("mtype")
    private Integer memberType;

    /**
     * 微信OpenID
     */
    @JsonProperty("openid")
    private String openId;

    /**
     * 微信AppID
     */
    @JsonProperty("appid")
    private String appId;

    /**
     * 微信unionId
     */
    @JsonProperty("union_id")
    private String unionId;

    /**
     * 支付宝ID
     */
    @JsonProperty("alipay_user_id")
    private String alipayUserId;

    /**
     * 标签值
     */
    @JsonProperty("labels")
    private List<MemberLabelGroupVO> labels;

    /**
     * 扩展字段列表
     */
    @JsonProperty("field_val_list")
    private List<ExtendFieldDTO> fieldValList;

    private List<Map<String, JSONObject>> fields;

    @JsonProperty("ancestors")
    private List<GroupDTO> ancestors;

    /**
     * 创建时间
     */
    @JsonProperty("createdDT")
    @JsonFormat(pattern = "yyyy/MM/dd HH:mm:ss")
    protected Date createTime;

    /**
     * 修改时间
     */
    @JsonProperty("updatedDT")
    @JsonFormat(pattern = "yyyy/MM/dd HH:mm:ss")
    protected Date updateTime;

    /**
     * 外部编号
     */
    @JsonProperty("out_no")
    private String outNo;
}
